import Vue from 'vue';
import axios from 'axios';
import {ACCESS_TOKEN} from '@/store/mutation-types'

// request.js 用于axios请求的封装
// TODO 1. 需要一个baseUrl的路径   
let apiBaseUrl = ''
// 2. 使用axios创建axios的实例
const service = axios.create({
    baseURL: apiBaseUrl,
    timeout: 9000   // 请求超时时间
})

// 3.拦截器 未登录的时候 验证token失败的时候需要拦截 发起请求之前的拦截器
service.interceptors.request.use(config => {
    // 3.1 从缓存中获取token
    const token = Vue.ls.get(ACCESS_TOKEN);
    // 3.2 存在token 将每个请求头上携带token
    if (token) { 
        config.headers['X-Access-Token'] = token;
    }
    return config
}, (error) => { 
    return Promise.reject(error);
})

// 4.定义的错误的处理方法 
// const err = (error) => { 
//     // TODO 错误异常的处理
// }

// 4.请求响应的拦截器
service.interceptors.response.use((response) => {
    return response.data
}, () => { 

})

export {
    service as axios
}